在 Java 中，`forEach` 是一种用于遍历集合（如 `List`、`Set`、`Map`）或流（`Stream`）的方法。它通常用于对集合中的每个元素执行某些操作。以下是 `forEach` 的几种常见用法：

---

### **1. 遍历 `List`**
`forEach` 可以用于遍历 `List` 中的每个元素。

#### **示例：遍历整数列表**
```java
import java.util.Arrays;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用 forEach 遍历列表
        numbers.forEach(number -> System.out.println(number));
    }
}
```

**输出：**
```
1
2
3
4
5
```

---

### **2. 遍历 `Set`**
`forEach` 也可以用于遍历 `Set` 中的每个元素。

#### **示例：遍历字符串集合**
```java
import java.util.Set;
import java.util.HashSet;

public class ForEachExample {
    public static void main(String[] args) {
        Set<String> fruits = new HashSet<>(Arrays.asList("Apple", "Banana", "Orange"));

        // 使用 forEach 遍历集合
        fruits.forEach(fruit -> System.out.println(fruit));
    }
}
```

**输出：**
```
Apple
Banana
Orange
```

---

### **3. 遍历 `Map`**
`forEach` 可以用于遍历 `Map` 中的键值对。

#### **示例：遍历 `Map` 的键值对**
```java
import java.util.Map;
import java.util.HashMap;

public class ForEachExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 10);
        map.put("Banana", 5);
        map.put("Orange", 8);

        // 使用 forEach 遍历 Map
        map.forEach((key, value) -> System.out.println(key + " -> " + value));
    }
}
```

**输出：**
```
Apple -> 10
Banana -> 5
Orange -> 8
```

---

### **4. 遍历 `Stream`**
`forEach` 可以用于遍历 `Stream` 中的每个元素。

#### **示例：遍历整数流**
```java
import java.util.Arrays;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用 Stream 和 forEach 遍历列表
        numbers.stream()
               .forEach(number -> System.out.println(number));
    }
}
```

**输出：**
```
1
2
3
4
5
```

---

### **5. 使用方法引用**
如果 `forEach` 的操作是调用一个方法，可以使用方法引用（Method Reference）来简化代码。

#### **示例：使用方法引用**
```java
import java.util.Arrays;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // 使用方法引用遍历列表
        names.forEach(System.out::println);
    }
}
```

**输出：**
```
Alice
Bob
Charlie
```

---

### **6. 并行流中的 `forEach`**
`forEach` 可以与并行流结合使用，以提高性能。

#### **示例：并行流遍历**
```java
import java.util.Arrays;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 使用并行流和 forEach 遍历列表
        numbers.parallelStream()
               .forEach(number -> System.out.println(number));
    }
}
```

**输出：**
```
3
1
5
2
4
```

注意：并行流的输出顺序可能不一致，因为元素是并行处理的。

---

### **总结**
- **遍历集合**：`List`、`Set`、`Map`。
- **遍历流**：`Stream`。
- **方法引用**：简化代码。
- **并行流**：提高性能。

`forEach` 是一种简洁且强大的遍历方式，适用于各种场景。如果有其他问题，请随时提问！